/**
 * 获取url参数
 */
export function getQueryString(name) {
	var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
	var r = window.location.search.substr(1).match(reg);
	if (r != null) {
		return unescape(r[2]);
	}
	return null;
}

/**
 * 标签状态 设置标题
 */
export function signState(item = '1') {
	var genderMap = {
		'1': { text: '未开始', class: 'sign-not' },
		'2': { text: '投票中', class: 'sign-have' },
		'3': { text: '投票结束', class: 'sign-cancel' },
		'4': { text: '公示中', class: 'sign-publicity' },
		'5': { text: '公示结束', class: 'sign-end' },
		'6': { text: '投票作废', class: 'sign-cancel' },
	};
	return genderMap[item];
}

/**
 *  时间格式化
 */
export function timeFormat(time) {
	return time ? time.slice(0, time.indexOf(':') + 3) : ''
}

/**
 *  合计计算
 */
export function countAmount(num) {
	return num ? parseFloat((num).toFixed(4)) : 0
}

/**
 * 数据字段展示
 */
export function showDictText(code, arr) {
	console.log(code, arr, 'sdf');
	if (!code) return;
	if (arr?.length > 0) {
		let arrFilter = arr?.filter(item => {
			console.log(item, 'item');
			// item?.value === code
		});
		console.log(arrFilter, 'arrFilter');
		if (arrFilter?.length > 0) {
			return arrFilter[0]['text'];
		}
	}
}

/**
 * 富文本内容格式化
 */
export function handleFormat(content) {
	const regex = new RegExp('<img', 'gi');
	return content?.replace(regex, '<img style="max-width: 100%;"');
}

/**
 * 通过身份证计算年龄
 */
export function discriCard(UUserCard) {
	(UUserCard + '').substring(6, 10) + "-" + (UUserCard + '').substring(10, 12) + "-" + (UUserCard + '').substring(12, 14)
	//获取年龄 
	let myDate = new Date();
	let month = myDate.getMonth() + 1;
	let day = myDate.getDate()
	let age = myDate.getFullYear() - Number((UUserCard + '').substring(6, 10)) - 1
	if (Number((UUserCard + '').substring(10, 12)) < month || Number((UUserCard + '').substring(10, 12)) == month && Number((UUserCard + '').substring(12, 14)) <= day) {
		age++
	}
	return age
}

/**
 * 根与身份证号获取性别
 */
export function getSexByIdCard(idCard) {
	const arr = ['2', '1']
	if (idCard.length === 15) {
		return arr[idCard.substr(14, 1) % 2]
	} else if (idCard.length === 18) {
		return arr[idCard.substr(16, 1) % 2]
	}

	return ''
}

/**
 * url的参数格式字符串，转成对象
 */
export function getUrlParamJson(url) {
	var obj = {};
	var arr = url.split('&');
	var len = arr.length;
	for (var a = 0; a < len; a++) {
		var nv = arr[a].split('=');
		obj[nv[0]] = unescape(nv[1]);
	}
	return obj;
}

/**
 * 手机号中间 * 显示
 * @param {any} phoneNumber 
 * @return 
 */
export function maskPhoneNumber(phoneNumber) {
	// 确保输入的是一个有效的电话号码  
	if (!/\d{11}/.test(phoneNumber)) {
		return '无效的电话号码';
	}
	// 使用正则表达式替换中间四位为星号  
	return phoneNumber.replace(/^(\d{3})\d{4}(\d{4})$/, "$1****$2");
}


/**
 * 保留小数点几位数, 四舍五入
 * @param num: 数值
 * @param digit: 小数点后位数
 * @returns string
 */
export function myFixed(number, i = 2) {
	if (Object.is(parseFloat(number), NaN)) {
		return console.log(`传入的值：${number}不是一个数字`);
	}
	let decimalNum = null;
	// 先转换为数值型
	let num = Number(number);
	// 判断是否为数值型
	if (!isNaN(num)) {
		// 切分整数与小数
		const arr = num.toString().split('.');
		// 是小数且小数位大于保留个数
		if (arr.length > 1 && arr[1].length > i) {
			// 小数部分字符串
			const decimal = arr[1].slice(i, i + 1);
			// toFixed 有 bug，四舍六入五随机
			// 当四舍五入的数为 5，给其 + 1
			if (decimal === '5') {
				// 这里可能会存在 0.1 ** 5 = 0.000010000000000000003 但不影响四舍五入
				num += Math.pow(0.1, i + 1);
			}
			// @ts-ignore
			decimalNum = num.toFixed(i);
		} else {
			// @ts-ignore
			decimalNum = num;
		}
		// @ts-ignore
		decimalNum = Number(decimalNum);
	}
	return decimalNum;
}